#include<stdio.h>
#include<stdlib.h>

#define True 1
#define False 0

typedef struct node{
	int d;
	struct node* p;
	struct node* n;
}node;

node* il(){
	node* l=(node*)malloc(sizeof(node));
	l->d=0;
	l->p=NULL;
	l->n=NULL;
	return l;
}


void hi(node* l,int d)
{
	node* n=(node*)malloc(sizeof(node));
	n->d=d;
	if(l->n==NULL)
	{
		l->n=n;
		n->p=l;
		n->n=NULL;
		return;
	}else{
		n->n=l->n;
		n->p=l;
		l->n->p=n;
		l->n=n;
	}
}

void ti(node* l,int d)
{
	node* n=(node*)malloc(sizeof(node));
	n->d=d;
	node* cur=l->n;
	if(cur==NULL){
		hi(l,d);
		return;
	}
	while(cur!=NULL && cur->n!=NULL){
		cur=cur->n;
	}
	cur->n=n;
	n->p=cur;
}

int del(node* l,int d)
{
	node* cur=l->n;
	while(cur!=NULL&&cur->d!=d){
		cur=cur->n;
	}
	if(cur!=NULL && cur->d==d){
		if(cur->n!=NULL){
			cur->p->n=cur->n;
			cur->n->p=cur->p;
			free(cur);
			return True;
		}else{
			cur->p->n=NULL;
			free(cur);
			return True;
		}
	}
	return False;
}

void pf(node* l)
{
	node * cur=l->n;
	while(cur){
		printf("%d ",cur->d);
		cur=cur->n;
	}
	printf("\n");
}

int main(void)
{
	node* l=il();
	hi(l,1);
	hi(l,2);
	hi(l,3);
	hi(l,4);
	ti(l,5);
	ti(l,6);
	del(l,4);
	pf(l);
	printf("hello world\n");
	return 0;
}

